/**
 * AI 分析结果格式化工具
 * 用于将原始的 AI 分析文本格式化为易读的 Markdown 格式
 */

/**
 * 格式化 AI 分析文本为易读的纯文本格式（适用于 uni-app）
 * @param {string} text - 原始 AI 分析文本
 * @returns {string} 格式化后的文本
 */
export function formatAiAnalysisToMarkdown(text) {
  if (!text) return text

  let formatted = text

  // 第一步：移除 "markdown" 标记（AI 有时会返回这个前缀）
  formatted = formatted.replace(/^markdown\s*/i, '')
  formatted = formatted.replace(/```markdown\s*/gi, '')
  formatted = formatted.replace(/```\s*/g, '')

  // 第二步：处理 #### 分隔符（AI 常用来分段）- 必须在清理 # 号之前
  formatted = formatted.replace(/####/g, '\n')

  // 第三步：清理所有 # 号
  formatted = formatted.replace(/#{1,6}\s*/g, '')

  // 第四步：清理分隔符
  formatted = formatted.replace(/---+/g, '\n')

  // 第五步：清理多余的星号（**粗体标记**）
  formatted = formatted.replace(/\*\*/g, '')

  // 第六步：在 emoji 前后添加空格（不添加换行）
  formatted = formatted.replace(/([^\n\s])([\u{1F300}-\u{1F9FF}])/gu, '$1 $2')
  formatted = formatted.replace(/([\u{1F300}-\u{1F9FF}])([^\n\s])/gu, '$1 $2')

  // 第七步：处理"-"开头的列表项（先处理，避免后续规则干扰）
  formatted = formatted.replace(/([^\n])(-[\u4e00-\u9fa5])/g, '$1\n$2')

  // 第八步：处理"中文关键词："格式（AI 分段的主要方式）
  // 使用更精确的规则：在"完整词+冒号"前添加换行
  // 常见的段落关键词列表
  const sectionKeywords = [
    '趋势分析：', '趋势：', '现价：', '理由：', '交易建议：', '风险提示：', '方向：',
    '潜在入场方案：', '操作策略：', '注意事项：', '市场情绪：', '技术指标：',
    '价格预测：', '阻力位：', '支撑位：', '目标位：', '趋势判断：', '价格区间：',
    '做多策略：', '做空策略：', '市场分析：', '入场方案：',
    // 支持带括号的关键词
    '交易建议（基于MACD策略）：', '交易建议（基于RSI策略）：', '交易建议（基于均线策略）：'
  ]

  sectionKeywords.forEach(keyword => {
    const regex = new RegExp(`([^\\n])(${keyword.replace(/：/g, '：')})`, 'g')
    formatted = formatted.replace(regex, '$1\n$2')
  })

  // 第九步：处理交易方案的子项（入场价、目标、止损）
  formatted = formatted.replace(/([^\n])(入场价：)/g, '$1\n$2')
  formatted = formatted.replace(/([^\n])(目标\d+：)/g, '$1\n$2')
  formatted = formatted.replace(/([^\n])(止损价：)/g, '$1\n$2')

  // 第十步：处理数字列表（1. 2. 3.）
  formatted = formatted.replace(/([^\n])(\d+\.\s*[\u4e00-\u9fa5])/g, '$1\n$2')

  // 第十一步：处理">"开头的引用或建议
  formatted = formatted.replace(/([^\n])(>[\u4e00-\u9fa5])/g, '$1\n$2')

  // 第十二步：清理多余的空行（最多保留1个换行）
  formatted = formatted.replace(/\n{2,}/g, '\n')

  // 第十三步：清理开头和结尾的空白
  formatted = formatted.trim()

  return formatted
}

/**
 * 解析并格式化 AI 分析文本
 * @param {string} text - 原始 AI 分析文本
 * @returns {string} 格式化后的文本
 */
export function parseAiAnalysis(text) {
  if (!text) return text

  // 使用 formatAiAnalysisToMarkdown 函数格式化文本
  return formatAiAnalysisToMarkdown(text)
}

export default {
  formatAiAnalysisToMarkdown,
  parseAiAnalysis
}

